home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / sysv_fs.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  9KB  |  207 lines

  1. #ifndef _LINUX_SYSV_FS_H
  2. #define _LINUX_SYSV_FS_H
  3.  
  4. #if defined(__GNUC__)
  5. # define __packed2__    __attribute__((packed, aligned(2)))
  6. #else
  7. >> I want to scream! <<
  8. #endif
  9.  
  10.  
  11. #ifndef __KERNEL__
  12. typedef u16 __fs16;
  13. typedef u32 __fs16;
  14. #endif
  15.  
  16. /* inode numbers are 16 bit */
  17. typedef __fs16 sysv_ino_t;
  18.  
  19. /* Block numbers are 24 bit, sometimes stored in 32 bit.
  20.    On Coherent FS, they are always stored in PDP-11 manner: the least
  21.    significant 16 bits come last. */
  22. typedef __fs32 sysv_zone_t;
  23.  
  24. /* 0 is non-existent */
  25. #define SYSV_BADBL_INO    1    /* inode of bad blocks file */
  26. #define SYSV_ROOT_INO    2    /* inode of root directory */
  27.  
  28.  
  29. /* Xenix super-block data on disk */
  30. #define XENIX_NICINOD    100    /* number of inode cache entries */
  31. #define XENIX_NICFREE    100    /* number of free block list chunk entries */
  32. struct xenix_super_block {
  33.     __fs16        s_isize; /* index of first data zone */
  34.     __fs32        s_fsize __packed2__; /* total number of zones of this fs */
  35.     /* the start of the free block list: */
  36.     __fs16        s_nfree;    /* number of free blocks in s_free, <= XENIX_NICFREE */
  37.     sysv_zone_t    s_free[XENIX_NICFREE]; /* first free block list chunk */
  38.     /* the cache of free inodes: */
  39.     __fs16        s_ninode; /* number of free inodes in s_inode, <= XENIX_NICINOD */
  40.     sysv_ino_t    s_inode[XENIX_NICINOD]; /* some free inodes */
  41.     /* locks, not used by Linux: */
  42.     char        s_flock;    /* lock during free block list manipulation */
  43.     char        s_ilock;    /* lock during inode cache manipulation */
  44.     char        s_fmod;        /* super-block modified flag */
  45.     char        s_ronly;    /* flag whether fs is mounted read-only */
  46.     __fs32        s_time __packed2__; /* time of last super block update */
  47.     __fs32        s_tfree __packed2__; /* total number of free zones */
  48.     __fs16        s_tinode;    /* total number of free inodes */
  49.     __fs16        s_dinfo[4];    /* device information ?? */
  50.     char        s_fname[6];    /* file system volume name */
  51.     char        s_fpack[6];    /* file system pack name */
  52.     char        s_clean;    /* set to 0x46 when filesystem is properly unmounted */
  53.     char        s_fill[371];
  54.     s32        s_magic;    /* version of file system */
  55.     __fs32        s_type;        /* type of file system: 1 for 512 byte blocks
  56.                                 2 for 1024 byte blocks
  57.                                 3 for 2048 byte blocks */
  58.                                 
  59. };
  60.  
  61. /*
  62.  * SystemV FS comes in two variants:
  63.  * sysv2: System V Release 2 (e.g. Microport), structure elements aligned(2).
  64.  * sysv4: System V Release 4 (e.g. Consensys), structure elements aligned(4).
  65.  */
  66. #define SYSV_NICINOD    100    /* number of inode cache entries */
  67. #define SYSV_NICFREE    50    /* number of free block list chunk entries */
  68.  
  69. /* SystemV4 super-block data on disk */
  70. struct sysv4_super_block {
  71.     __fs16    s_isize;    /* index of first data zone */
  72.     u16    s_pad0;
  73.     __fs32    s_fsize;    /* total number of zones of this fs */
  74.     /* the start of the free block list: */
  75.     __fs16    s_nfree;    /* number of free blocks in s_free, <= SYSV_NICFREE */
  76.     u16    s_pad1;
  77.     sysv_zone_t    s_free[SYSV_NICFREE]; /* first free block list chunk */
  78.     /* the cache of free inodes: */
  79.     __fs16    s_ninode;    /* number of free inodes in s_inode, <= SYSV_NICINOD */
  80.     u16    s_pad2;
  81.     sysv_ino_t     s_inode[SYSV_NICINOD]; /* some free inodes */
  82.     /* locks, not used by Linux: */
  83.     char    s_flock;    /* lock during free block list manipulation */
  84.     char    s_ilock;    /* lock during inode cache manipulation */
  85.     char    s_fmod;        /* super-block modified flag */
  86.     char    s_ronly;    /* flag whether fs is mounted read-only */
  87.     __fs32    s_time;        /* time of last super block update */
  88.     __fs16    s_dinfo[4];    /* device information ?? */
  89.     __fs32    s_tfree;    /* total number of free zones */
  90.     __fs16    s_tinode;    /* total number of free inodes */
  91.     u16    s_pad3;
  92.     char    s_fname[6];    /* file system volume name */
  93.     char    s_fpack[6];    /* file system pack name */
  94.     s32    s_fill[12];
  95.     __fs32    s_state;    /* file system state: 0x7c269d38-s_time means clean */
  96.     s32    s_magic;    /* version of file system */
  97.     __fs32    s_type;        /* type of file system: 1 for 512 byte blocks
  98.                                 2 for 1024 byte blocks */
  99. };
  100.  
  101. /* SystemV2 super-block data on disk */
  102. struct sysv2_super_block {
  103.     __fs16    s_isize;         /* index of first data zone */
  104.     __fs32    s_fsize __packed2__;    /* total number of zones of this fs */
  105.     /* the start of the free block list: */
  106.     __fs16    s_nfree;        /* number of free blocks in s_free, <= SYSV_NICFREE */
  107.     sysv_zone_t s_free[SYSV_NICFREE];    /* first free block list chunk */
  108.     /* the cache of free inodes: */
  109.     __fs16    s_ninode;        /* number of free inodes in s_inode, <= SYSV_NICINOD */
  110.     sysv_ino_t     s_inode[SYSV_NICINOD]; /* some free inodes */
  111.     /* locks, not used by Linux: */
  112.     char    s_flock;        /* lock during free block list manipulation */
  113.     char    s_ilock;        /* lock during inode cache manipulation */
  114.     char    s_fmod;            /* super-block modified flag */
  115.     char    s_ronly;        /* flag whether fs is mounted read-only */
  116.     __fs32    s_time __packed2__;    /* time of last super block update */
  117.     __fs16    s_dinfo[4];        /* device information ?? */
  118.     __fs32    s_tfree __packed2__;    /* total number of free zones */
  119.     __fs16    s_tinode;        /* total number of free inodes */
  120.     char    s_fname[6];        /* file system volume name */
  121.     char    s_fpack[6];        /* file system pack name */
  122.     s32    s_fill[14];
  123.     __fs32    s_state;        /* file system state: 0xcb096f43 means clean */
  124.     s32    s_magic;        /* version of file system */
  125.     __fs32    s_type;            /* type of file system: 1 for 512 byte blocks
  126.                                 2 for 1024 byte blocks */
  127. };
  128.  
  129. /* V7 super-block data on disk */
  130. #define V7_NICINOD     100     /* number of inode cache entries */
  131. #define V7_NICFREE     50      /* number of free block list chunk entries */
  132. struct v7_super_block {
  133.     __fs16 s_isize;        /* index of first data zone */
  134.     __fs32 s_fsize __packed2__; /* total number of zones of this fs */
  135.     /* the start of the free block list: */
  136.     __fs16 s_nfree;        /* number of free blocks in s_free, <= V7_NICFREE */
  137.     sysv_zone_t s_free[V7_NICFREE]; /* first free block list chunk */
  138.     /* the cache of free inodes: */
  139.     __fs16 s_ninode;       /* number of free inodes in s_inode, <= V7_NICINOD */
  140.     sysv_ino_t      s_inode[V7_NICINOD]; /* some free inodes */
  141.     /* locks, not used by Linux or V7: */
  142.     char    s_flock;        /* lock during free block list manipulation */
  143.     char    s_ilock;        /* lock during inode cache manipulation */
  144.     char    s_fmod;         /* super-block modified flag */
  145.     char    s_ronly;        /* flag whether fs is mounted read-only */
  146.     __fs32  s_time __packed2__; /* time of last super block update */
  147.     /* the following fields are not maintained by V7: */
  148.     __fs32  s_tfree __packed2__; /* total number of free zones */
  149.     __fs16  s_tinode;       /* total number of free inodes */
  150.     __fs16  s_m;            /* interleave factor */
  151.     __fs16  s_n;            /* interleave factor */
  152.     char    s_fname[6];     /* file system name */
  153.     char    s_fpack[6];     /* file system pack name */
  154. };
  155.  
  156. /* Coherent super-block data on disk */
  157. #define COH_NICINOD    100    /* number of inode cache entries */
  158. #define COH_NICFREE    64    /* number of free block list chunk entries */
  159. struct coh_super_block {
  160.     __fs16        s_isize;    /* index of first data zone */
  161.     __fs32        s_fsize __packed2__; /* total number of zones of this fs */
  162.     /* the start of the free block list: */
  163.     __fs16 s_nfree;    /* number of free blocks in s_free, <= COH_NICFREE */
  164.     sysv_zone_t    s_free[COH_NICFREE] __packed2__; /* first free block list chunk */
  165.     /* the cache of free inodes: */
  166.     __fs16        s_ninode;    /* number of free inodes in s_inode, <= COH_NICINOD */
  167.     sysv_ino_t    s_inode[COH_NICINOD]; /* some free inodes */
  168.     /* locks, not used by Linux: */
  169.     char        s_flock;    /* lock during free block list manipulation */
  170.     char        s_ilock;    /* lock during inode cache manipulation */
  171.     char        s_fmod;        /* super-block modified flag */
  172.     char        s_ronly;    /* flag whether fs is mounted read-only */
  173.     __fs32        s_time __packed2__; /* time of last super block update */
  174.     __fs32        s_tfree __packed2__; /* total number of free zones */
  175.     __fs16        s_tinode;    /* total number of free inodes */
  176.     __fs16        s_interleave_m;    /* interleave factor */
  177.     __fs16        s_interleave_n;
  178.     char        s_fname[6];    /* file system volume name */
  179.     char        s_fpack[6];    /* file system pack name */
  180.     __fs32        s_unique;    /* zero, not used */
  181. };
  182.  
  183. /* SystemV/Coherent inode data on disk */
  184. struct sysv_inode {
  185.     __fs16 i_mode;
  186.     __fs16 i_nlink;
  187.     __fs16 i_uid;
  188.     __fs16 i_gid;
  189.     __fs32 i_size;
  190.     u8  i_data[3*(10+1+1+1)];
  191.     u8  i_gen;
  192.     __fs32 i_atime;    /* time of last access */
  193.     __fs32 i_mtime;    /* time of last modification */
  194.     __fs32 i_ctime;    /* time of creation */
  195. };
  196.  
  197. /* SystemV/Coherent directory entry on disk */
  198. #define SYSV_NAMELEN    14    /* max size of name in struct sysv_dir_entry */
  199. struct sysv_dir_entry {
  200.     sysv_ino_t inode;
  201.     char name[SYSV_NAMELEN]; /* up to 14 characters, the rest are zeroes */
  202. };
  203.  
  204. #define SYSV_DIRSIZE    sizeof(struct sysv_dir_entry)    /* size of every directory entry */
  205.  
  206. #endif /* _LINUX_SYSV_FS_H */
  207.